/*
 * HasPtr.h
 * 析构函数不会自动释放指针对象
 * 需要自行定义析构函数，释放调指针所指内存空间
 *  Created on: 2020年11月29日
 *      Author: san
 */

#ifndef HASPTR_H_
#define HASPTR_H_

#include <string>

class HasPtrLikePoint {
public:

	// 构造函数和析构函数
	HasPtrLikePoint(const std::string &s = std::string()):
		ps(new std::string(s)), i(0), use(new std::size_t(1)) {}
	HasPtrLikePoint(const HasPtrLikePoint &);
	HasPtrLikePoint &operator=(const HasPtrLikePoint &);
	virtual ~HasPtrLikePoint();

private:
	// 如果使用合成的拷贝构造函数和拷贝赋值运算符号，那么这些对象的ps指针指向的是同一块内存，就会造成悬浮指针的问题
	std::string *ps;
	int i;
	std::size_t *use;
};

#endif /* HASPTR_H_ */
